import wechath5 from "@/utils/wechath5";
import {
	isWeixinClient,
	toast
} from "@/utils/tools";
import {
	baseURL,
	basePath
} from "@/config/app";
import {
	getGeocoder
} from "@/api/store.js";
import amap from '@/utils/amap-wx.130.js'
const state = {
	cityInfo: {
		// id: city_id,
		// name: result.ad_info.city,
		// gcj02_lat: result.location.lat,
		// gcj02_lng: result.location.lng
	},
	ischosed: false
};

const mutations = {
	setCityInfo(state, data) {
		state.cityInfo = data;
		uni.$emit("refreshhome");
	},
	setIschosed(state, ischosed) {
		state.ischosed = ischosed;
	}
};

const actions = {
	// 位置授权
	async getAuthorize({
		dispatch,
		commit
	}) {
		const [error, data] = await uni.showModal({
			title: "您已拒绝地理位置权限",
			content: "是否进入权限管理，调整授权？",
		}); 
		console.log("data",data);
		// state.ischosed = false
		commit("setIschosed", false)
		if (data.confirm) {
			const [error, data] = await uni.openSetting();
			if (data.authSetting["scope.userLocation"]) dispatch("initLocationFunc");
		}else{
			getGeocoder({}).then(()=>{
				commit("setCityInfo", {
					id: '',
					name: '',
					gcj02_lat: '',
					gcj02_lng: '',
					userAddress: "请授权定位"
				})
				uni.$emit("refreshPage", true);
			})
		}
	},
	// 获取当前定位
	async initLocationFunc({
		dispatch,
		rootState,
		commit
	}, istrue) {
		try {
			const [error, res] = await uni.getLocation({
				// #ifndef APP
				type: "gcj02",
				// #endif 
			});
			// console.log(error, res, "----");
			// if(error?.errMsg == 'getLocation:fail 频繁调用会增加电量损耗，可考虑使用 wx.onLocationChange 监听地理位置变化') return toast({ title: '频繁定位，请稍后' })
			// #ifdef MP
			dispatch("getSystemInfo");
			if (!rootState.app.sysInfo.locationEnabled) {
				uni.showModal({
					title: "温馨提示",
					content: "您的手机定位还未开启",
				});
				// state.ischosed = false
				commit("setIschosed", false)
				return;
			}
			// #endif
			// #ifdef MP
			if (!res) return dispatch("getAuthorize");
			// #endif
			if (error) {
				uni.showModal({
					title: "温馨提示",
					// content: JSON.stringify(error.errMsg)
					content: "获取位置失败，请检查是否开启定位！",
				});
				// state.ischosed = false
				commit("setIschosed", false)
				return;
			}
			// #ifdef APP-PLUS

			if (!res) {
				// state.ischosed = false
				commit("setIschosed", false)
				return toast({
					title: "获取位置失败"
				});
			}
			// #endif 
			if (istrue) {
				// console.log('res', res)
				toast({
					title: '已更新定位请放心选购'
				});
			}

			// state.ischosed = true
			commit("setIschosed", true)


			const amapObject = new amap.AMapWX({
				key: 'b941e28521ce88d50171c95d2497fe9c'
			})
			amapObject.getRegeo({
				success: (resAmap) => {
					console.log("地理位置调试", resAmap)
					console.log(resAmap, resAmap[0].regeocodeData.formatted_address)
					dispatch("getGeocoderFunc", {
						location: `${resAmap[0].longitude},${resAmap[0].latitude}`,
					});
				},
				fail: (err) => {
					console.log(err)
				}
			})

			// dispatch("getGeocoderFunc", {
			// 	location: `${res.longitude},${res.latitude}`,
			// });
		} catch (err) {
			// console.log(err);
			// toast({ title: err.errMsg })
			// throw new Error(err + '获取位置')
		}
	},
	// 逆解析地址
	getGeocoderFunc({
		commit
	}, location) {
		console.log("location", {
			...location
		});
		getGeocoder({
			...location
		}).then((res) => {
			console.log('位置', res);
			uni.$emit("refreshPage", true);
			if (res.code == 1) {
				const result = res.data.result;
				const city_id = res.data.city_id;
				commit("setCityInfo", {
					id: city_id,
					name: result.ad_info.city,
					gcj02_lat: result.location.lat,
					gcj02_lng: result.location.lng,
					userAddress: result.address
				});
			} else {
				toast({
					title: res.msg
				});
			}
		});
	},
};

export default {
	state,
	mutations,
	actions,
};